/*************************************************************************
	> File Name: P3853.cpp
	> Author: yufangze
	> Mail: 2224590123@qq.com
	> Created Time: 2025-06-23 16:12:31
 ************************************************************************/

#include <iostream>
#include <set>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;

#define MAX_N 100000
int arr[MAX_N + 5];

bool check(int *arr, int n, int val, int k) {
    int cnt = 0;
    for (int i = 0; i < n - 1; i++) {
        int temp = arr[i + 1] - arr[i];
        if (temp > val) cnt += (temp - 1) / val;
        if (cnt > k) return 0;
    }
    return 1;
}

int solve(int *arr, int n, int l, int k) {
    int head = 1, tail = l, mid;
    while (tail - head > 3) {
        mid = head + (tail - head) / 2;
        if (check(arr, n, mid, k)) tail = mid;
        else head = mid + 1;
    }
    for (int i = head; i <= tail; i++) {
        if (check(arr, n, i, k)) return i;
    }
    return l;
}

int main() {
    int l, n, k;
    cin >> l >> n >> k;
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    int res = solve(arr, n, l, k);
    cout << res << endl;
    return 0;
}
